// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import vueResource from "vue-resource"
Vue.use(vueResource);

// 引入vuex
import Vuex from "vuex";
Vue.use(Vuex);

// 从localstorge中获取数据
let loaclCar =JSON.parse(localStorage.getItem("car") ) || []
// 创建一个vuex实例的仓库
const store =new Vuex.Store({
  state:{//用于存放数据的 相当于 vue实例中的data
    car:loaclCar,
  },
  mutations:{ //相当于vue实例中的methods
    changCar(state,shopinfo){
      // 如果商品列表中有的话 就是数量加上传过来的
      // 如果没有 就 push到 state中
      let flag = false ;
      state.car.some((item)=>{
        if(item.id===shopinfo.id){
          item.count+=parseInt(shopinfo.count);
          flag=true;
          return true;
        }
      })
      if(!flag){
        state.car.push(shopinfo)
      }
      localStorage.setItem("car",JSON.stringify(state.car));
    },

    // 修改car里面的是否选中
    changSelect(state,id){
      state.car.some((item)=>{
        if(item.id===id){
          item.select = !item.select;
          return true;
        }
      })
      localStorage.setItem("car",JSON.stringify(state.car));
    },

    // 点击购物车中的加减时 修改购物车的数量
    changCount(state,val){
      state.car.some((item)=>{
        if(item.id===val.id){
          item.count = parseInt(val.count);
          return true;
        }
      })
      localStorage.setItem("car",JSON.stringify(state.car))
    },

    // 把商品从购物车中删除
    delCarShop(state,id){
      state.car.some((item,i)=>{
        if(item.id===id){
          state.car.splice(i,1);
          return true;
        }
      })
      localStorage.setItem("car",JSON.stringify(state.car));
    }
   
  },
  getters:{  // 相当于计算属性
    getAllCount(state){
      let sum = 0;
      state.car.forEach((item)=>{
        sum+=item.count;
      })
      return sum ;
    },
    getGoodsCount(state){
      let o = {};
      state.car.forEach((item)=>{
        o[item.id]=item.count;
      })
      return o;
    },
    getGoodsSelect(state){
      let o = {};
      state.car.forEach((item)=>{
        o[item.id] = item.select;
      })
      return o;
    },

    // 根据select计算商品的总价和商品的数量
    getGoodsCountAndTotalPrice(state){
      let o ={
        count:0,
        price:0
      }
      state.car.forEach((item)=>{
        if(item.select){
          o.count +=item.count;
          o.price +=item.price*item.count; 
        }
      })
      return o;
    }

  }
})


//设置请求根路径
Vue.http.options.root="http://www.liulongbin.top" ;

// 全局设置post时候的表单数据格式组织形式
Vue.http.options.emulateJSON = true;

// 导入时间过滤器的插件
import moment from "moment"

//导入查看缩略图插件
import VuePreview from "vue2-preview"
 Vue.use(VuePreview)

// 引入element的插件
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI)
// 按需导入
import { Button, Select } from 'element-ui';
Vue.component(Button.name, Button);
Vue.component(Select.name, Select);

//引入MUI库
import "./lib/mui/css/mui.css"
import "./lib/mui/css/icons-extra.css"

// 按需导入Mint-ui中的组件
// import { Header,Button,Swipe, SwipeItem } from 'mint-ui';

// Vue.component(Header.name, Header);
// Vue.component(Button.name, Button);
// Vue.component(Swipe.name, Swipe);
// Vue.component(SwipeItem.name, SwipeItem);

// 懒加载 
// import { Lazyload } from 'mint-ui';

// Vue.use(Lazyload);

// 注意懒加载必须全局导入
import Mint from 'mint-ui';
Vue.use(Mint);

Vue.config.productionTip = false;


// 注册一个全局的过滤器
Vue.filter("timeFormat",(date,pattern="YYYY-MM-DD HH:mm:ss")=>{
  return moment(date).format(pattern)
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,//将vuex创建好的store挂载到vue实例上
  render:c=>c(App),
  // 注册一个根路径
  http:{
    root:"http://www.liulongbin.top"
  }
})
